package main

import (
	"fmt"
	"math/rand"
)

// 打印九九乘法表
func multiplyTable() {
	// for i := 1; i < 10; i++ {
	// 	for j := 1; j < i+1; j++ {
	// 		if j == 1 {
	// 			// 第一列左对齐两格
	// 			fmt.Printf("%v*%v=%-2v ", j, i, i*j)
	// 		}
	// 		// 其他列左对齐三格
	// 		fmt.Printf("%v*%v=%-3v ", j, i, i*j) // 输出九九乘法表
	// 	}
	// 	fmt.Println()
	// }
	for i := 1; i <= 9; i++ {
		//打印每一行
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%v\t", i, j, i*j)
		}
		//换行
		fmt.Println("")
	}
}

// 求斐波那契
func fibonacci(n int) int {
	if n < 2 {
		return n
	}
	return fibonacci(n-1) + fibonacci(n-2)
}

func main() {
	// 作业
	// 九九乘法表
	multiplyTable()

	// 随机生成20以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第偶数个累乘求积。打印结果
	var sum int16
	var ji int64 = 1

	for i := 1; i < 21; i++ {
		num := rand.Intn(20) + 1 // Intn(20)是[0, 20), +1之后就是[1,21)
		if i&1 == 1 {
			sum += int16(num)
		} else {
			ji *= int64(num)
		}
	}
	fmt.Printf("%v,%v\n", sum, ji)

	// 100以内斐波那契
	i := 0
	for {
		num := fibonacci(i)
		if num < 100 {
			fmt.Println(num)
			i++
		} else {
			break
		}

	}
}

// 阿飞老师的批改
// 1. 第一题输出逻辑错误，导致输出的99乘法表多出一列
